サービスレベル目標 (Service Level Objectives) (Site Reliability Engineering)
概要
サービスを適切に管理するために、指標が必要
測定基準 (metric) のモデル化、測定基準の選択、測定基準の分析のためのフレームワークについて説明
サービスレベルの用語
指標について
指標をどう決めるか?
ユーザーがシステムに求めているものを理解することから
ユーザー向けのシステムでは、一般的に可用性、レイテンシ、スループット
ストレージシステムでは、多くの場合、レイテンシー、可用性、耐久性
データ処理パイプラインのようなビッグデータシステムでは、スループットとエンドツーエンドのレイテンシーが重視される傾向
場合によってはクライアントサイドで計測することもある
集計は慎重に行う
単に平均を取ると見えなくなる情報がある
目標について
測定できるものから考えるのではなく、ユーザーが求めているものから測定するものを決める → 目標から決めるのが良いこともある
必ずしもユーザーが求めているものを測定できるとは限らないので、近いものを測定することになる
SLO をできるだけ明確にするために、どのように測定され、どのような条件で有効であるかを明記する 目標を決めることは純粋な技術的活動ではなく、ビジネス観点等も必要
有用な教訓
現状のパフォーマンスを基に決めない
シンプルに保つ
絶対的な目標 (「常に」 とか 「無限に」 とか) は避ける
できるだけ少なくする
目標は変更できる (ゆるい目標から始めて、必要に応じて厳しくしていくこともできる)
SLO を決めることで、ユーザーはシステムにそれを期待することになる ユーザーに現実的な期待を持ってもらうために、次のような戦術が使える
安全マージンを取る : ユーザー向けの SLO と内部の SLO を分ける
達成しすぎない : ユーザーは公表されている SLO ではなく、実際に提供されているサービスをもとに判断しがち
場合によってはあえて計画的に停止させる、というような手も取る (Chubby の例) 契約について
SLA を作成するには、ビジネスチームと法務チームが、違反した場合の適切な結果や罰則を選ぶ必要 SRE の役割は、SLA に含まれる SLO を満たす可能性と難易度を理解する手助けをすること